package br.com.conciliador.consulta.vo;

import java.io.Serializable;

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.annotations.Formula;
import org.hibernate.annotations.Proxy;
import org.hibernate.annotations.Type;

import br.com.conciliador.consulta.vo.filtro.FiltroExtratoVo;
import br.com.r2.util.tipodado.Moeda;
import br.com.r2.util.tipodado.Texto;

@Entity
@Table(name = "VWEXTRATO")
@Proxy(lazy = false)
public class ExtratoVo implements Serializable
{

   /**
    * 
    */
   private static final long serialVersionUID = -6337662436999325603L;

   @EmbeddedId     
   protected ExtratoPK extratoPK; 
   
   @JoinColumn(name = "TIPOLANCAMENTO")
   @Type(type = "br.com.r2.util.tipodado.hibernate.TextoUT")
   private Texto tipoLancamento;

   @Transient
   private Moeda saldo;
   
   @Formula("(CASE WHEN TIPOLANCAMENTO = 'D' THEN VALORLANCAMENTO ELSE 0 END)")
   @Type(type = "br.com.r2.util.tipodado.hibernate.MoedaUT")
   private Moeda debito;
   
   @Formula("(CASE WHEN TIPOLANCAMENTO = 'C' THEN VALORLANCAMENTO ELSE 0 END)")
   @Type(type = "br.com.r2.util.tipodado.hibernate.MoedaUT")
   private Moeda credito;

   @Transient
   private FiltroExtratoVo filtro;

   public ExtratoPK getExtratoPK()
   {
      return extratoPK;
   }

   public void setExtratoPK(ExtratoPK extratoPK)
   {
      this.extratoPK = extratoPK;
   }

	public Texto getTipoLancamento() {
		return tipoLancamento;
	}

	public void setTipoLancamento(Texto tipoLancamento) {
		this.tipoLancamento = tipoLancamento;
	}

	public Moeda getSaldo()
	{
			return this.saldo;
	}

	public void setSaldo(Moeda saldo)
	{
		this.saldo = saldo;
	}

	public Moeda getCredito() {
		return credito;
	}

	public void setCredito(Moeda credito) {
		this.credito = credito;
	}

	public Moeda getDebito() {
		return debito;
	}

	public void setDebito(Moeda debito) {
		this.debito = debito;
	}

	public FiltroExtratoVo getFiltro()
	{
		return filtro;
	}

	public void setFiltro(FiltroExtratoVo filtro)
	{
		this.filtro = filtro;
	}
}
